﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Resources;
using Microsoft.VisualStudio.Modeling;
using Microsoft.VisualStudio.TextTemplating;
using VsxFactory.Modeling.VisualStudio;
using VsxFactory.Modeling.Strategies.Rules;

namespace VsxFactory.Modeling.Strategies
{
    public interface INodeGenerator
    {
        /// <summary>
        /// Initialize the generator
        /// </summary>
        /// <param name="context">Current strategy context</param>
        void Initialize(IStrategyContext context);
        /// <summary>
        /// Generate the artefact
        /// </summary>
        /// <param name="ctx">Current strategy context</param>
        /// <param name="outputFileName"></param>
        /// <param name="element"></param>
        /// <param name="namespace"></param>
        /// <returns></returns>
        bool Generate(IStrategyContext ctx, ref string outputFileName, GenerationSpec element, string @namespace);
        IVsProjectFileItem AddToSolution(IVsProject projectNode, IVsProjectFileItem node, string fullName);
    }
}
